package kr.pe.osdev.enums;

public enum DateTimeFormatList {
	YYYYMMDD(DateTime.yyyyMMdd),
	YYMMDD(DateTime.yyMMdd),
	HHMM(DateTime.HHmm),
	HHMMSS(DateTime.HHmmss),
	HHMMSSSSS(DateTime.HHmmssSSS),
	YYYYMMDDHHMMSSSSS(DateTime.yyyyMMddHHmmssSSS);
	
    private final DateTime dateTime;

    DateTimeFormatList(DateTime dateTime) {
        this.dateTime = dateTime;
    }

    private enum DateTime {
        yyyyMMdd {
            String getDateTimeFormat() {
                return "yyyyMMdd";
            }

            boolean findTableByName(String str) {
                if (str != null && !"".equals(str) && "yyyyMMdd".equals(str)) {
                    return true;
                } else {
                    return false;
                }
            }
        },
        
        yyMMdd {
        	String getDateTimeFormat() {
        		return "yyMMdd";
        	}
        	
        	boolean findTableByName(String str) {
        		if (str != null && !"".equals(str) && "yyMMdd".equals(str)) {
        			return true;
        		} else {
        			return false;
        		}
        	}
        },

        HHmm {
            String getDateTimeFormat() {
                return "HHmm";
            }

            boolean findTableByName(String str) {
                if (str != null && !"".equals(str) && "HHmm".equals(str)) {
                    return true;
                } else {
                    return false;
                }
            }
        },
        
        HHmmss {
        	String getDateTimeFormat() {
        		return "HHmmss";
        	}
        	
        	boolean findTableByName(String str) {
        		if (str != null && !"".equals(str) && "HHmmss".equals(str)) {
        			return true;
        		} else {
        			return false;
        		}
        	}
        },
        
        HHmmssSSS {
        	String getDateTimeFormat() {
        		return "HHmmssSSS";
        	}
        	
        	boolean findTableByName(String str) {
        		if (str != null && !"".equals(str) && "HHmmssSSS".equals(str)) {
        			return true;
        		} else {
        			return false;
        		}
        	}
        },
        
        yyyyMMddHHmmssSSS {
        	String getDateTimeFormat() {
        		return "yyyyMMddHHmmssSSS";
        	}
        	
        	boolean findTableByName(String str) {
        		if (str != null && !"".equals(str) && "yyyyMMddHHmmssSSS".equals(str)) {
        			return true;
        		} else {
        			return false;
        		}
        	}
        };

        abstract String getDateTimeFormat();

        abstract boolean findTableByName(String str);
    }

    public String getDateTimeFormat() {
        return dateTime.getDateTimeFormat();
    }
    
    public DateTime getDateTime() {
        return dateTime;
    }
    
    public boolean findTableByName(String str) {
        return dateTime.findTableByName(str);
    }	
}
